{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:39.044975Z",
     "end_time": "2024-05-23T20:49:39.891608Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 第4章 数据预处理\n",
    "### 4.1 数据清洗\n",
    "#### 4.1.1 缺失值处理\n",
    "##### 1.拉格朗日插值法\n",
    "##### 2.牛顿插值法"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\58248\\AppData\\Local\\Temp\\ipykernel_12100\\2354174323.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data['销量'][(data['销量'] < 400) | (data['销量'] > 5000)] = None  # 过滤异常值，将其变为空值\n",
      "C:\\Users\\58248\\AppData\\Local\\Temp\\ipykernel_12100\\2354174323.py:20: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[i][j] = ployinterp_column(data[i], j)\n",
      "C:\\Users\\58248\\AppData\\Local\\Temp\\ipykernel_12100\\2354174323.py:20: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[i][j] = ployinterp_column(data[i], j)\n",
      "C:\\Users\\58248\\AppData\\Local\\Temp\\ipykernel_12100\\2354174323.py:20: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[i][j] = ployinterp_column(data[i], j)\n",
      "C:\\Users\\58248\\AppData\\Local\\Temp\\ipykernel_12100\\2354174323.py:20: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[i][j] = ployinterp_column(data[i], j)\n",
      "C:\\Users\\58248\\AppData\\Local\\Temp\\ipykernel_12100\\2354174323.py:20: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[i][j] = ployinterp_column(data[i], j)\n"
     ]
    }
   ],
   "source": [
    "# 用拉格朗日插值法对缺失值进行插补\n",
    "from scipy.interpolate import lagrange\n",
    "\n",
    "data = pd.read_excel('./data/catering_sale.xls')\n",
    "data['销量'][(data['销量'] < 400) | (data['销量'] > 5000)] = None  # 过滤异常值，将其变为空值\n",
    "\n",
    "\n",
    "# 自定义列向量插值函数\n",
    "# s为列向量，n为被插值的位置，k为取前后的数据个数，默认为5\n",
    "def ployinterp_column(s, n, k=5):\n",
    "    y = s[list(range(n - k, n)) + list(range(n + 1, n + 1 + k))]  # 取数\n",
    "    y = y[y.notnull()]  # 剔除空值\n",
    "    return lagrange(y.index, list(y))(n)  # 插值并返回插值结果\n",
    "\n",
    "\n",
    "# 逐个元素判断是否需要插值\n",
    "for i in data.columns:\n",
    "    for j in range(len(data)):\n",
    "        if (data[i].isnull())[j]:  # 如果为空即插值。\n",
    "            data[i][j] = ployinterp_column(data[i], j)\n",
    "data.to_excel('./tmp/sales.xlsx')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:39.894598Z",
     "end_time": "2024-05-23T20:49:40.480379Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### 4.1.2 异常值处理"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 4.2 数据集成\n",
    "#### 4.2.1 实体识别\n",
    "##### 1.同名异义\n",
    "##### 2.异名同义\n",
    "##### 3.单位不统一\n",
    "#### 4.2.2 冗余属性识别\n",
    "#### 4.2.3 数据变换\n",
    "#### 4.2.4 简单函数变换\n",
    "#### 4.2.5 规范化\n",
    "##### 1.最小-最大规范化\n",
    "##### 2.零-均值规范化\n",
    "##### 3.小数定标规范化"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "     0    1    2     3\n0   78  521  602  2863\n1  144 -600 -521  2245\n2   95 -457  468 -1283\n3   69  596  695  1054\n4  190  527  691  2051\n5  101  403  470  2487\n6  146  413  435  2571",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>0</th>\n      <th>1</th>\n      <th>2</th>\n      <th>3</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>78</td>\n      <td>521</td>\n      <td>602</td>\n      <td>2863</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>144</td>\n      <td>-600</td>\n      <td>-521</td>\n      <td>2245</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>95</td>\n      <td>-457</td>\n      <td>468</td>\n      <td>-1283</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>69</td>\n      <td>596</td>\n      <td>695</td>\n      <td>1054</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>190</td>\n      <td>527</td>\n      <td>691</td>\n      <td>2051</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>101</td>\n      <td>403</td>\n      <td>470</td>\n      <td>2487</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>146</td>\n      <td>413</td>\n      <td>435</td>\n      <td>2571</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_excel('./data/normalization_data.xls', header=None)\n",
    "data"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:40.483287Z",
     "end_time": "2024-05-23T20:49:40.496866Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "data": {
      "text/plain": "          0         1         2         3\n0  0.074380  0.937291  0.923520  1.000000\n1  0.619835  0.000000  0.000000  0.850941\n2  0.214876  0.119565  0.813322  0.000000\n3  0.000000  1.000000  1.000000  0.563676\n4  1.000000  0.942308  0.996711  0.804149\n5  0.264463  0.838629  0.814967  0.909310\n6  0.636364  0.846990  0.786184  0.929571",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>0</th>\n      <th>1</th>\n      <th>2</th>\n      <th>3</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0.074380</td>\n      <td>0.937291</td>\n      <td>0.923520</td>\n      <td>1.000000</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0.619835</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.850941</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0.214876</td>\n      <td>0.119565</td>\n      <td>0.813322</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>0.563676</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1.000000</td>\n      <td>0.942308</td>\n      <td>0.996711</td>\n      <td>0.804149</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>0.264463</td>\n      <td>0.838629</td>\n      <td>0.814967</td>\n      <td>0.909310</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>0.636364</td>\n      <td>0.846990</td>\n      <td>0.786184</td>\n      <td>0.929571</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 最小-最大规范化\n",
    "(data - data.min()) / (data.max() - data.min())"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:40.498587Z",
     "end_time": "2024-05-23T20:49:40.534112Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "data": {
      "text/plain": "          0         1         2         3\n0 -0.905383  0.635863  0.464531  0.798149\n1  0.604678 -1.587675 -2.193167  0.369390\n2 -0.516428 -1.304030  0.147406 -2.078279\n3 -1.111301  0.784628  0.684625 -0.456906\n4  1.657146  0.647765  0.675159  0.234796\n5 -0.379150  0.401807  0.152139  0.537286\n6  0.650438  0.421642  0.069308  0.595564",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>0</th>\n      <th>1</th>\n      <th>2</th>\n      <th>3</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>-0.905383</td>\n      <td>0.635863</td>\n      <td>0.464531</td>\n      <td>0.798149</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0.604678</td>\n      <td>-1.587675</td>\n      <td>-2.193167</td>\n      <td>0.369390</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>-0.516428</td>\n      <td>-1.304030</td>\n      <td>0.147406</td>\n      <td>-2.078279</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>-1.111301</td>\n      <td>0.784628</td>\n      <td>0.684625</td>\n      <td>-0.456906</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1.657146</td>\n      <td>0.647765</td>\n      <td>0.675159</td>\n      <td>0.234796</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>-0.379150</td>\n      <td>0.401807</td>\n      <td>0.152139</td>\n      <td>0.537286</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>0.650438</td>\n      <td>0.421642</td>\n      <td>0.069308</td>\n      <td>0.595564</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 零-均值规范化\n",
    "(data - data.mean()) / data.std()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:40.514511Z",
     "end_time": "2024-05-23T20:49:40.602462Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "       0      1      2       3\n0  0.078  0.521  0.602  0.2863\n1  0.144 -0.600 -0.521  0.2245\n2  0.095 -0.457  0.468 -0.1283\n3  0.069  0.596  0.695  0.1054\n4  0.190  0.527  0.691  0.2051\n5  0.101  0.403  0.470  0.2487\n6  0.146  0.413  0.435  0.2571",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>0</th>\n      <th>1</th>\n      <th>2</th>\n      <th>3</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0.078</td>\n      <td>0.521</td>\n      <td>0.602</td>\n      <td>0.2863</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0.144</td>\n      <td>-0.600</td>\n      <td>-0.521</td>\n      <td>0.2245</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0.095</td>\n      <td>-0.457</td>\n      <td>0.468</td>\n      <td>-0.1283</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0.069</td>\n      <td>0.596</td>\n      <td>0.695</td>\n      <td>0.1054</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0.190</td>\n      <td>0.527</td>\n      <td>0.691</td>\n      <td>0.2051</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>0.101</td>\n      <td>0.403</td>\n      <td>0.470</td>\n      <td>0.2487</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>0.146</td>\n      <td>0.413</td>\n      <td>0.435</td>\n      <td>0.2571</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 小数定标规范化\n",
    "data / 10 ** np.ceil(np.log10(data.abs().max()))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:40.529712Z",
     "end_time": "2024-05-23T20:49:40.623511Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### 4.2.6 连续属性离散化\n",
    "##### 1.离散化的过程\n",
    "##### 2.常用的离散化方法"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 800x300 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "<Figure size 800x300 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "<Figure size 800x300 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = pd.read_excel('./data/discretization_data.xls')\n",
    "data = data['肝气郁结证型系数'].copy()\n",
    "k = 4\n",
    "\n",
    "# 等宽离散化，各个类别依次命名为0,1,2,3\n",
    "d1 = pd.cut(data, k, labels=range(k))\n",
    "\n",
    "# 等频率离散化\n",
    "w = [1.0 * i / k for i in range(k + 1)]\n",
    "w = data.describe(percentiles=w)[4:4 + k + 1]  #使用describe函数自动计算分位数\n",
    "w.iloc[0] = w.iloc[0] * (1 - 1e-10)\n",
    "d2 = pd.cut(data, w, labels=range(k))\n",
    "\n",
    "from sklearn.cluster import KMeans\n",
    "\n",
    "kmodel = KMeans(n_clusters=k, n_init='auto')\n",
    "kmodel.fit(np.array(data).reshape((len(data), 1)))  #训练模型\n",
    "c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)  #输出聚类中心，并且排序（默认是随机排序的）\n",
    "w = c.rolling(2).mean()  #相邻两项求中心点，作为界点\n",
    "w = w.dropna()\n",
    "w = [0] + list(w[0]) + [data.max()]\n",
    "d3 = pd.cut(data, w, labels=range(k))\n",
    "\n",
    "\n",
    "def cluster_plot(d, k):\n",
    "    plt.figure(figsize=(8, 3))\n",
    "    for j in range(0, k):\n",
    "        plt.plot(data[d == j], [j for i in d[d == j]], 'o')\n",
    "    plt.ylim(-0.5, k - 0.5)\n",
    "    return plt\n",
    "\n",
    "\n",
    "cluster_plot(d1, k).show()\n",
    "cluster_plot(d2, k).show()\n",
    "cluster_plot(d3, k).show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:40.544192Z",
     "end_time": "2024-05-23T20:49:41.539736Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### 4.2.7 属性构造"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "data": {
      "text/plain": "   供入电量  供出电量       线损率\n0   986   912  0.075051\n1  1208  1083  0.103477\n2  1108   975  0.120036\n3  1082   934  0.136784\n4  1285  1102  0.142412",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>供入电量</th>\n      <th>供出电量</th>\n      <th>线损率</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>986</td>\n      <td>912</td>\n      <td>0.075051</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1208</td>\n      <td>1083</td>\n      <td>0.103477</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1108</td>\n      <td>975</td>\n      <td>0.120036</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>1082</td>\n      <td>934</td>\n      <td>0.136784</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1285</td>\n      <td>1102</td>\n      <td>0.142412</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_excel('./data/electricity_data.xls')\n",
    "data['线损率'] = (data['供入电量'] - data['供出电量']) / data['供入电量']\n",
    "data"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:41.541533Z",
     "end_time": "2024-05-23T20:49:41.569341Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### 4.2.8 小波变换\n",
    "##### 1.基于小波变换的特征提取方法\n",
    "##### 2.小波基函数\n",
    "##### 3.小波变换\n",
    "##### 4.基于小波变换的多尺度空间能力分布特征提取方法"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [
    {
     "data": {
      "text/plain": "[array([2415.1478541 , 2395.74470824, 2402.22022728, 2408.90987352,\n        2402.22022728, 2395.74470824, 2415.1478541 , 2369.53622493,\n        1958.0913368 , 1983.87619596, 1901.68851538, 1651.86483216,\n        1482.45129628, 1356.98779058, 1257.4459793 , 1265.75505172,\n        1363.66712581, 1427.53767222, 1568.87951307, 1893.80694993,\n        2295.89161125, 2555.9239482 , 2778.31817145, 2871.0940301 ,\n        2954.38189098, 2981.0281365 , 2986.06286012, 3091.56214184,\n        3085.0678644 , 2840.05639099, 2782.74679521, 2776.99922688,\n        2833.0658032 , 2907.76710805, 2496.58749928, 2443.95791914,\n        2338.50723857, 2394.15834442, 2186.86013504, 2142.10730351,\n        2066.37469747, 2097.47366057, 2190.20987484, 2024.82470966,\n        1999.88792082, 1761.22260043, 2012.8983115 , 1733.14320566,\n        1955.69105593, 2296.53399998, 2332.11621828, 2436.91433782,\n        2248.43497823, 1928.01215666, 1900.73383661, 1804.08152916,\n        1596.93576991, 1375.26325034, 1301.52662997, 1239.15426738,\n        1186.59596164, 1319.79503991, 1366.29061126, 1541.13036373,\n        1840.28203581, 2332.24861782, 2493.05709766, 2756.64959852,\n        2845.85405655, 2889.08956115, 2900.45305889, 2894.26919258,\n        2840.00331868, 2972.87057918, 2734.41261131, 2706.91816977,\n        2748.45656461, 2728.48445985, 2699.97766246, 2573.64021822,\n        2465.86126471, 2389.76210231, 2228.72532938, 2147.04749027,\n        2101.5149566 , 2060.59130892, 2073.90160123, 2125.05661853,\n        2006.49905922, 1892.43376708, 1792.18694605, 1688.28436526,\n        1759.13437455, 1662.84067347, 2211.37879446, 2298.66750686,\n        2229.3528378 , 2250.43556987, 1739.81121296, 1711.93766043,\n        1658.80982905, 1343.09569093, 1170.87330461,  930.3307274 ,\n         881.12593524,  806.05407736,  796.07602554,  770.19910471,\n         746.44388457,  872.75531896, 1072.73155416, 1203.88261161,\n        1402.5617364 , 1520.92224501, 1899.51673709, 1836.55406856,\n        1874.02882644, 1860.42136727, 1843.63833987, 1803.4998732 ,\n        1888.2388324 , 1808.61624732, 1669.61176324, 1589.11409167,\n        1454.81743823, 1309.27429412, 1217.19395153, 1155.90443861,\n        1100.16891616, 1135.66615726, 1090.30057756, 1175.24958262,\n        1265.17133627, 1224.91217397, 1174.91998265, 1124.20079064,\n        1081.12884006, 1128.58871491, 1168.71694008, 1687.91722313,\n        1793.37627801, 1885.84661105, 1821.46713782, 1836.21073473,\n        1850.45948483, 1795.06691925, 1850.45948483, 1836.21073473,\n        1821.46713782]),\n array([-5.11468240e+00, -7.78481941e+00, -5.59636066e+00,  5.68434189e-14,\n         5.59636066e+00,  7.78481941e+00,  5.11468240e+00, -2.81258232e+00,\n         3.26062134e+01,  2.68735619e+01,  1.20971007e+01, -5.07671404e-01,\n         7.62522769e+00, -6.84072854e-01, -1.16884926e+01, -1.18088402e+01,\n         1.33926665e+01, -2.01235299e+01,  3.48260315e+00, -3.54659040e+00,\n         2.01837609e+01,  1.15681152e+01, -1.18638949e+01,  6.84726925e+00,\n        -4.11590600e+00, -1.02132760e+01, -1.27666042e+01, -9.20952401e+00,\n         2.77461418e+01, -3.98479118e+01,  5.15429218e+01,  6.60716803e+01,\n         3.46710408e+01,  5.15409412e+01, -1.97726577e+00, -1.73356501e+01,\n        -2.98726832e+01,  6.88709748e+01,  4.13412171e+01, -3.34948636e+00,\n        -3.74146943e+00,  1.88164077e+00, -1.79587054e+01, -1.10115156e+01,\n         5.35815207e+00, -9.54447993e+00, -3.58666643e+01, -2.27141233e+01,\n        -1.10221405e+02, -8.13158319e+01, -7.74112994e+01, -7.01880092e+01,\n        -3.44548030e+01, -8.16498691e+00,  2.65900570e+00, -6.23319888e+00,\n         4.87340502e+00,  4.68468083e+00,  9.18690091e+00,  1.85430639e+01,\n         2.93779255e+00,  2.58783705e+01,  5.40120757e+00,  5.17675770e+01,\n         1.61772930e+01,  1.32514251e+01,  6.44356661e+00,  9.97394561e+00,\n        -6.32494684e+00, -1.37030499e+01,  7.82329250e+00,  2.65234860e-02,\n        -1.50525686e+01, -5.40883815e+00, -3.98406609e+01,  5.40847540e+01,\n         4.94428826e+01,  1.69192021e+01,  2.05407784e+01,  6.23907404e+00,\n         2.08672203e+00,  1.88346482e+01,  1.65051009e+01, -2.48767801e+01,\n         1.21863576e+01,  3.11490193e+01,  6.93708899e+00, -1.01772953e+01,\n        -9.74729168e+00,  1.89445313e+01,  7.99277116e+00,  7.44593412e+00,\n        -4.47889132e+00, -9.75438570e+01, -9.69116185e+01, -5.69268401e+01,\n        -3.98340942e+01, -4.56499591e+01, -1.41379229e+01, -4.08223971e+01,\n        -3.17335250e+01, -1.63609602e+00, -4.09533079e+01, -3.34194655e+01,\n        -2.24169494e+01, -2.33365528e+01,  1.66316122e+01, -8.71183199e+00,\n        -8.09314057e+00, -8.34584196e+00,  3.28930260e+01,  6.08832971e+01,\n         1.23425633e+01, -5.44692340e+01, -6.72967848e+01, -2.55981626e+01,\n        -1.59700109e+01, -5.97791744e+00, -6.95498159e+00, -1.49507701e+01,\n         6.94813379e+01,  2.99780448e+01, -2.88329977e+00,  1.96172085e+01,\n         1.07086206e+01,  1.35358732e+00, -9.96476145e+00, -9.87509065e+00,\n         3.28294967e-01,  4.38088766e+00,  2.28724457e+00,  7.26065444e+00,\n         1.73104487e-01, -9.90509246e-01,  1.12392282e+01,  6.73495793e+00,\n        -6.68352711e+00, -2.67788156e+00, -6.92047375e+01, -5.60700568e+01,\n        -6.98683373e+01, -6.56027327e+01, -7.28593276e+00, -3.41060513e-13,\n         7.28593276e+00,  0.00000000e+00, -7.28593276e+00,  3.41060513e-13,\n         7.28593276e+00]),\n array([ 1.56430851e+01,  2.02023201e+01,  1.82896563e+01,  0.00000000e+00,\n        -1.82896563e+01, -2.02023201e+01, -1.56430851e+01, -1.46005675e+01,\n        -7.44798321e-01, -2.11282888e+00,  2.19996447e+01, -1.06671227e+01,\n         2.69256087e+01, -2.33692970e+00,  1.35541469e+01, -2.43215660e+00,\n         4.84685147e-01, -1.88743192e+00,  1.77138502e+00, -1.68501577e+00,\n        -5.49538628e+00,  1.58632490e+00, -8.81283612e+00, -5.26304374e+00,\n         1.27544004e+00,  5.31140221e+00, -6.49338449e+00, -9.24841905e+00,\n        -1.09486420e+01, -3.98536720e+00, -1.99031297e-01, -6.30393271e+00,\n        -6.00269930e-01, -3.54188885e+00,  1.20236106e+01,  2.25324459e+01,\n        -5.70138251e-01,  1.66141956e+00,  7.85343691e+00,  1.27608648e+01,\n         4.73461534e+00, -1.92263117e+01, -1.86927439e+01, -1.58702888e+00,\n         1.24648941e+00, -1.02858165e-01,  8.35252054e+00, -1.19610249e+01,\n         1.49440803e+01,  4.05222500e+00, -7.99088548e+00, -2.35305917e+01,\n         1.82636402e+01,  3.31765394e+01, -1.66962711e+01,  1.05308999e+01,\n        -6.02086312e+00, -1.19904713e+01, -1.64146942e+01,  2.17213412e+00,\n         5.23045420e+00, -5.23692611e+01, -8.08460365e+00,  2.75501419e+00,\n        -3.68947228e+00,  1.41090506e+01,  1.10139186e+01, -1.75922276e+01,\n        -1.02304321e+02, -1.26369126e+00, -8.60651529e+00,  1.93099696e+00,\n        -8.39906884e+00,  7.62630602e-02, -9.56241137e+00, -2.40033413e+01,\n        -4.76301617e+00,  6.00018130e+00,  4.12825532e+00,  1.51983201e+01,\n        -1.84729607e+01, -3.43520685e+01, -8.88413436e+00,  6.72061783e+00,\n         8.33127003e+00, -1.32731100e+01,  2.69320897e+00,  7.67395243e+00,\n         7.74752717e+00, -8.08858916e+00, -4.69372887e+01, -9.04595280e+00,\n        -2.13330003e+01, -5.31824234e-01, -7.27765361e+00, -2.07763145e+01,\n        -1.74314130e+00, -6.21035711e+00, -2.33499364e+00, -5.18884494e+00,\n         2.79204430e+01, -6.79902281e+00,  3.38531749e+01,  6.66150791e+00,\n         1.12921136e+01, -1.16366159e+00,  1.66622737e+01,  1.43670321e+01,\n         2.21695030e+01,  4.94583385e+00, -5.03717999e-01,  2.36897738e+00,\n        -8.87948374e+00, -6.80861146e+00, -1.99846922e+00,  2.43601992e+00,\n        -8.61128674e+00,  3.88049157e+00, -6.51256224e-01, -2.04359881e+00,\n        -9.43907686e+00, -3.75159377e+00, -7.17578534e+00, -1.13455930e+01,\n        -8.08729082e-01,  2.95172821e+00,  9.96551805e+00,  7.98473834e+00,\n         1.90030827e+00, -3.14800316e-01, -4.99935966e-01, -1.16137873e+01,\n        -1.48673979e+01, -5.31393343e+00, -7.36442707e+00, -4.57743607e-01,\n        -2.80976705e+00, -5.34477137e-01,  1.98035638e+00,  6.72434677e+00,\n        -2.64941743e+00, -1.12137045e+01,  2.55926228e+01,  2.40870514e+01,\n        -4.51395526e+00,  2.11925368e+01,  1.15150864e+01,  1.93803358e+01,\n        -2.92984783e+00,  1.96382477e+00,  4.06857897e+00, -1.89976603e-01,\n        -2.86540694e+00,  1.77984597e+00,  5.64301585e-01,  2.14176140e+00,\n         1.89436312e+00, -1.09637286e+00, -3.13557104e+00,  2.28360823e+01,\n         1.04343602e+01,  1.05775474e+01,  1.40608257e+01, -5.74612870e-01,\n        -1.46426605e+01,  8.02561248e-01,  1.37218413e+01,  1.26836538e+01,\n         1.10445520e+01,  1.92850355e+01, -1.87980099e+01, -1.46876834e+01,\n        -1.44659888e+01, -1.42703719e+01, -1.15075697e+01,  1.89281008e+01,\n         1.97046348e+01,  8.94675089e+00,  7.11799213e+00,  2.10008158e+01,\n        -2.28268592e+01,  1.19805425e+01, -3.78040721e+01, -2.16322071e+01,\n        -5.89616096e+01, -1.60714414e+02,  2.85823770e+00, -7.68816671e+00,\n         3.53923292e+00,  4.04468459e+00,  7.55008608e+00,  3.08677509e+00,\n         3.95033266e+01, -8.27546747e+00,  5.95453690e+01,  1.51721232e+01,\n        -1.30574243e+01, -2.33700819e+01, -1.73610062e+01, -6.36833292e+00,\n         1.45062674e+00,  8.10616010e-01,  1.49131436e+01,  1.26814873e+00,\n         5.76364578e+00,  1.81268330e+01,  7.92921537e+00, -7.81342365e+00,\n        -7.13146287e+00, -6.09856977e+00, -7.30240112e+00, -1.47765443e+01,\n         8.71824245e-01,  1.68209667e+01,  3.03859224e+01,  1.64833358e+01,\n         2.99076646e+00,  1.87218247e+01, -3.42754977e+00, -1.54368111e+01,\n        -1.05355932e+01, -4.49337214e+01, -7.65680616e+00, -1.43888660e-01,\n        -3.28151498e+00, -5.71157942e+00, -1.73517663e+00,  1.27548413e+00,\n        -1.26138485e+01,  2.57666622e+00,  6.16088027e+00,  1.64270728e+00,\n         3.62703247e+00,  2.20582738e+01, -1.50921896e+01,  1.86543374e+01,\n         2.38697411e-01,  5.95607689e+00,  6.04227465e+00,  4.73483079e+00,\n         1.48073249e+01,  3.24423330e+00,  1.49770103e+01,  6.14748469e+00,\n        -6.66525015e-01, -4.23356919e+00, -4.05873647e+00,  1.03012586e+01,\n         2.91861509e+00,  4.45563504e+00,  5.48385371e-02,  1.24678287e+01,\n         1.18632934e+01,  3.43896274e+00,  2.21816457e+00, -1.22984027e+00,\n        -4.47929056e-01,  1.29861213e+01,  2.86894325e+00, -7.65370413e+00,\n        -1.47026993e+01, -4.90894760e+00,  1.08661638e+00,  5.02244736e+00,\n         7.55017447e+00,  7.55033807e+00,  1.28084918e+00, -2.60691721e+00,\n         8.42076407e+00,  1.72134396e+01, -2.84507041e+01,  3.05649534e-02,\n        -1.41652071e+01, -2.88368429e-01, -1.86646454e+01, -3.18257447e+01,\n         1.78906518e+00,  1.39005230e+00, -1.39005230e+00,  3.05409731e-01,\n        -3.05409731e-01,  1.39005230e+00, -1.39005230e+00, -1.78906518e+00]),\n array([-4.70073221e+00,  1.11205338e+01,  5.19985452e-01,  0.00000000e+00,\n        -5.19985452e-01, -1.11205338e+01,  4.70073221e+00, -5.23245641e+00,\n        -4.42141883e+00,  3.79796711e+00,  4.17411373e+00, -2.05808158e+00,\n        -7.61335479e+00, -4.86230842e+00,  3.04517477e+00,  1.10144254e+00,\n        -1.44553497e+00, -2.71415864e-01, -5.99284262e+00, -6.65301803e+00,\n         5.36104500e+00,  1.00734106e+01, -6.76157435e+00, -3.95208334e+00,\n         6.42953125e+00,  4.67862378e+00,  2.04181743e+00, -6.58273774e+00,\n        -8.46653474e-01,  8.93863232e+00,  1.02352022e+00, -4.30111250e+00,\n         1.00107879e+00,  4.06643906e+00, -2.79666256e+00, -3.82829501e+00,\n        -1.65636478e+00, -1.11804832e+01, -5.54500786e+00,  4.03885546e+00,\n        -1.13360130e+00, -2.93562546e+00, -1.69768476e+00, -3.20736012e+00,\n        -4.71054704e+00,  1.50847412e+00,  2.34154904e-01, -3.26503909e-01,\n         8.37837267e-01,  9.33416990e-01,  6.62970353e-01,  4.25122255e+00,\n         3.07835176e+00, -2.40957982e+00,  3.19929290e+00, -5.13329347e-01,\n        -4.28224025e+00,  3.05561842e+00,  1.99107109e+00, -1.42410612e+00,\n        -4.21938677e-01, -4.49637509e+00, -6.17084913e+00,  3.25498769e+00,\n         4.89996574e-01,  1.02920842e+00, -1.96960476e+00,  4.26062037e-01,\n        -4.76319814e-01, -7.78979462e+00, -3.51977180e+00,  7.06999930e+00,\n         1.09585523e+01,  2.02860358e+00, -3.50422061e+00,  5.41278752e+00,\n        -5.03260840e+00, -3.96224499e+00,  3.35319061e+00, -5.75233093e-01,\n         6.83900384e-01, -6.97898602e+00, -4.37139563e+00,  9.06517903e-01,\n         1.55515782e+00, -4.14842374e+00,  6.61670870e+00, -1.14174529e+00,\n        -1.59069395e+00, -1.35306389e-01,  7.63013820e+00,  6.59509358e+00,\n         4.15290374e+00,  4.45265156e+00,  5.16675110e-01,  1.35003558e+00,\n        -1.20395773e+01, -2.17929815e+00,  4.11899254e+00, -1.16053299e+00,\n         1.06014409e+01, -3.45668031e-01,  2.82440679e+00, -5.76605566e+00,\n         3.93851119e-01, -7.40754692e-01, -1.37148005e+00, -8.96579595e+00,\n        -3.15581459e+01, -1.38691354e+01, -4.94266357e+00, -1.28229199e+00,\n        -7.24120086e+00, -7.79748292e+00, -2.23452544e+01, -2.08018744e+01,\n         1.19178070e+01,  5.71667730e-01,  5.71039951e+00,  5.22443790e+00,\n        -7.36384080e-01, -5.26996355e+00, -6.77510495e+00, -8.83424442e+00,\n        -2.06294754e+01, -1.96209806e+00, -3.08532971e+00, -3.22582124e+00,\n         5.30161308e+00,  1.40233523e+01,  1.61017269e+01,  3.46067737e-01,\n         8.07792911e-01,  1.78776741e-01, -8.42912047e-02,  3.11675857e+00,\n        -5.00064301e+00,  9.69632008e-01,  6.45996294e-01, -1.12006167e+00,\n         4.27289802e+00, -3.11563122e+00, -5.43841692e+00, -1.72142452e+01,\n        -3.15037082e+00,  4.86214020e+00,  1.14528907e+00, -1.09315899e+00,\n         5.33710672e-01,  2.75015442e+00,  1.37970853e+00,  3.41837244e+00,\n        -3.89176873e+00, -1.31190777e+00, -2.33050362e+01, -5.09591686e+01,\n         5.59036232e+00,  2.17825084e+01, -1.50051004e+01,  9.31800584e-01,\n        -3.75465139e-01,  8.49082974e+00,  4.76974052e+01,  9.43756141e+00,\n         1.41029875e+01, -5.80463459e+00, -1.74209442e+00, -5.19660962e+00,\n         4.38702270e-01,  2.39757085e+00,  1.42460666e+01, -1.75897134e+00,\n         2.23997485e+00,  1.01642969e+00, -5.96201670e+00,  1.53038566e+01,\n         1.80451440e+00,  2.09091971e+00, -5.30591716e+00, -4.54818248e+00,\n        -9.46327719e-01,  5.99677182e-01,  9.37279402e+00, -5.21071098e+00,\n        -2.49486707e+00, -2.00004166e-01,  4.89937837e+00,  5.85531735e+00,\n        -9.17662568e-03, -6.67782452e+00,  1.43171319e+01,  2.39938052e+00,\n        -1.85759398e+00, -6.82671593e+00,  1.20388718e+00,  2.46992973e+00,\n         3.68893340e+00,  9.49234132e-01, -4.47777944e+00, -2.55375940e+00,\n        -4.28240142e-01,  7.44902964e+00,  1.66987312e+00, -2.60947163e+00,\n        -1.57385369e+00,  1.13334154e+00,  2.41835277e+00,  5.56940362e+00,\n         5.59285572e+00, -4.30507225e+00, -7.75873676e+00,  5.21831670e+00,\n         4.49569323e+00, -1.86113148e+00, -4.41014224e+00,  2.98232030e+00,\n         1.11177859e+00, -1.43913575e+00, -8.47638642e-01, -9.18568665e-01,\n         2.42818171e+00,  4.19479985e+00,  4.72895860e+00,  3.77771439e-01,\n         2.20137740e+00,  4.92603588e+00,  4.35816120e+00,  4.66678827e+00,\n         5.77915113e+00,  2.83776735e+00, -1.41118046e+00, -3.43072496e+00,\n        -3.17704288e+00, -4.23780637e+00, -4.67341613e+00,  3.11020048e+00,\n        -7.06258618e+00, -1.08663258e+01,  1.79985348e+00,  1.07115185e+01,\n        -1.76933943e+00, -1.62448300e+00,  2.43987761e+00,  1.26971505e+01,\n         5.20902276e+00,  2.25706671e-01,  6.39929628e+00,  9.83737667e+00,\n         4.54317325e+00, -6.04938630e+00, -3.57159738e+00,  1.67692395e+00,\n         6.10553043e-01, -3.04523813e+00, -5.63754917e-01,  2.91370425e+00,\n        -3.12207912e+00,  2.59430464e+00, -2.56497926e+00, -6.36155650e+00,\n        -2.94650232e+00,  7.22708870e+00,  5.83929860e+00, -5.12156190e+00,\n        -3.39925336e+00,  7.58008462e+00,  3.37216973e+00,  2.06493309e+00,\n        -2.03338114e+00,  3.92300536e+00,  5.23915045e+00, -2.52409235e-01,\n        -3.35783480e+00,  4.39957152e+00, -3.02716080e-01, -3.04725915e+00,\n        -3.25019926e+00, -2.06064112e+00, -3.33349456e+00, -3.70047491e+00,\n         1.78630845e+01,  1.38314002e+00,  4.06869384e+00, -2.48824436e+00,\n        -2.33949015e+00,  3.11987816e+00,  2.07528024e+00, -4.46942363e+00,\n        -1.36101292e+00, -2.14388479e-01,  4.12740765e+00,  3.90687880e+00,\n        -3.58366748e+00, -5.89148293e+00, -1.81683239e+00,  2.57132625e+00,\n         1.04262896e+00, -7.64630889e+00, -8.75452229e+00, -6.94601422e+00,\n        -4.20345657e+00, -4.04877447e+00, -5.49680353e+00, -6.15311186e+00,\n         1.94681969e+00,  3.54373288e+00, -4.05675508e+00, -1.10083148e+01,\n        -1.56826748e+01, -7.04634895e+00, -3.78067804e+00, -1.38942811e+01,\n         1.33442887e+01,  3.36143009e+01,  6.33375231e+00, -2.00789907e+01,\n        -1.91421133e+01, -3.05358510e+01, -1.92945717e+01,  5.26340279e+00,\n         7.88249919e+00, -7.25005503e+00, -6.81244218e+00, -8.05106143e+00,\n        -2.38241480e+01, -1.29913461e+01,  1.04308944e+00,  5.42918754e+00,\n         2.17144156e+01,  8.62291630e+00,  3.06465642e-01,  8.18328102e+00,\n        -1.08493147e+01, -8.66946365e+00,  1.36491605e+01, -2.66068592e-01,\n        -2.26879409e+01, -1.38889093e+01, -7.65186203e+00, -3.38022676e+00,\n        -1.03932109e+01, -2.11652183e+01, -2.87572069e+01, -2.30279785e+01,\n         1.12187787e+01,  1.11200562e+01,  1.06521402e+01,  1.24580886e+01,\n         8.29121491e+00, -8.51127141e+00, -2.76211818e+01, -1.75696057e+01,\n        -3.01137580e+01, -1.22671573e+01,  7.00906235e+00,  2.06941549e+01,\n        -5.56544005e+00, -1.15227295e+01, -1.56938138e+01, -1.17184160e+01,\n        -1.80650762e+01, -1.16404655e+01, -1.55872450e+01, -3.72973983e+01,\n        -3.11347055e+01,  1.59602569e+01,  6.28258767e+00,  1.39373247e+01,\n         2.43347254e+00,  1.73243865e+00, -7.14530552e+00, -1.11300633e+01,\n        -1.05285211e+01,  4.05696081e+00,  6.53697070e+00, -2.15889437e-01,\n        -1.90660923e+01,  1.57278385e+01,  2.30436384e+01,  1.77343384e+01,\n         2.19310532e+01,  2.24563549e+01,  1.89808417e+01,  4.44402214e+00,\n         4.07543720e+01,  3.94954683e+01,  2.39741121e+01,  1.23368506e+01,\n         2.05383329e+01,  5.86332719e+00, -2.08391538e+00, -6.16742991e-01,\n         1.25391224e+01, -3.60586547e+00, -1.09842696e+01,  1.24058721e+00,\n         3.50767203e+00,  9.74344695e+00, -4.33881804e+00, -6.35029154e+00,\n        -1.40474993e+01,  1.46766726e+01,  3.14076770e+01,  1.84461602e+01,\n         2.51393204e+01,  1.92888770e+01, -5.62463921e+00, -1.18461499e+01,\n        -2.48132442e+01, -1.15970933e+01,  1.24895885e+01,  1.24325391e+01,\n        -4.17494132e+00,  1.32197142e+00, -2.89821503e+00,  8.21098447e-01,\n         8.81427942e+00,  2.43017751e+01,  4.88539173e+00, -2.17047631e+01,\n        -1.85319389e+01, -9.66734683e+00,  7.86842413e+00,  3.57883989e+01,\n         2.30939107e+01,  1.82097951e+01, -1.34220999e+01, -1.44406811e+01,\n        -7.42231179e-01,  2.22230985e+01,  1.94404923e+01,  1.24970871e+01,\n        -4.34473485e+00,  3.23527472e-01,  2.48960079e+01, -1.62076425e+01,\n        -5.18506172e+00,  2.01071438e+00,  1.84210177e+00,  6.28378919e-01,\n        -5.00767460e-01,  4.31140506e+00, -4.26519599e-01, -4.15587615e+00,\n        -3.06684927e+00, -3.61511991e-01,  7.70517219e+00,  2.57152585e+00,\n        -2.47854857e+00, -5.64314684e+00, -2.06907301e+00, -6.54910549e+00,\n         1.42920456e+00, -5.15532854e+00, -5.94053394e+00, -1.83828267e+00,\n        -4.45879693e+00, -7.17982773e+00, -5.47627422e+00, -1.26213911e+00,\n         7.12464778e+00, -2.91141292e+00,  4.30261072e+00, -1.23946020e+00,\n         2.04014429e-01, -4.34018934e+00, -8.37249834e+00, -6.53003304e+00,\n        -4.50789794e+00, -7.65744870e+00, -1.38929442e+00,  6.07147372e+00,\n         4.46839729e+00, -1.05611519e+00, -1.65770005e+00, -8.16731786e+00,\n        -2.69899717e+00, -2.02829886e+00, -3.57613575e+00, -5.99515607e-01,\n         3.43602609e+00,  1.75329971e+00,  3.73118302e+00,  3.66698203e+00,\n        -1.77883135e+00, -4.58257781e+00, -7.26949156e-01,  2.96745788e+00,\n         6.18722507e+00,  2.73344815e+00,  3.90247598e-03, -4.23314596e+00,\n        -2.00919714e+00, -1.93899222e-01, -3.35409401e+00, -5.37616797e+00,\n        -6.06279009e+00, -8.85079443e-02,  2.64855001e-01,  1.77090581e+00,\n         2.93802355e+00,  6.01440516e+00,  5.56605909e+00,  5.10960324e+00,\n         8.98217249e-01, -3.32181566e+00,  9.55850351e-03, -6.88678477e+00,\n        -2.25706061e+00,  8.23017021e-01,  1.92902146e-01,  6.03791529e+00,\n         1.16719371e+00,  1.10330639e+00,  4.81779922e+00,  2.27421001e+00,\n         2.24441708e+00, -1.82554999e+00,  4.87717916e+00,  9.73668664e-02,\n         1.88194589e+00,  2.33321948e+00, -2.55510780e+00, -1.12786499e+00,\n        -3.37060279e+00,  3.36361854e+00,  3.84395293e+00,  4.69281780e+00,\n        -1.99385219e+00, -3.96220450e+00, -9.63061089e+00,  1.68096451e+00,\n         2.12096875e+00,  3.81266112e+00, -2.27943199e+00,  2.40707160e+01,\n         5.83064228e+00,  6.16961987e+00, -5.34328951e+00, -2.48144625e+00,\n        -8.48291086e-01,  4.76332284e+00,  2.90493990e+00, -9.55041717e+00,\n         2.83889338e+00, -4.23304379e-01,  1.90060389e+00, -1.90060389e+00,\n         1.92687751e+00, -1.92687751e+00,  1.90060389e+00, -1.90060389e+00,\n         4.23304379e-01]),\n array([-5.49565457, -4.65208986, -4.51532393, ...,  0.32555413,\n         0.04462341, -0.22780373]),\n array([-0.70526016,  0.1715582 ,  0.55901578, ...,  0.18732613,\n        -1.21748897, -1.16181493])]"
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy.io import loadmat\n",
    "import pywt\n",
    "\n",
    "mat = loadmat('./data/leleccum.mat')\n",
    "signal = mat['leleccum'][0]\n",
    "coeffs = pywt.wavedec(signal, 'bior3.7', level=5)\n",
    "coeffs"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:41.557678Z",
     "end_time": "2024-05-23T20:49:41.661685Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-05-23T20:49:41.650722Z",
     "end_time": "2024-05-23T20:49:41.693188Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
